使用Maven编译Java项目 |
您所在的位置:网站首页 › javac 命令依赖使用maven › 使用Maven编译Java项目 |
本文带你用Maven编译一个简单的Java项目。 本文目标创建一个简单的Java项目,然后用Maven编译。 你需要 15分钟左右文本编辑器或者IDEJDK 8+ 创建项目我们首先需要创建项目一个Java项目。为了专注于Maven的操作,这个Java项目越简单越好。 创建文件夹结构在你选择的项目文件夹下面,创建子文件夹。 Windows系统的话,在命令行运行命令 : mkdir src\main\java\hello *nix系统的话,在运行命令 : mkdir -p src/main/java/hello 最后文件夹结构如下: └── src └── main └── java └── hello在src/main/java/hello文件夹下面,你可以按自己的想法创建任何Java类。为了简单起见,我们只创建两个类:HelloWorld.java和Greeter.java。 package hello; public class HelloWorld { public static void main(String[] args) { Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } } package hello; public class Greeter { public String sayHello(){ return "Hello world!"; } } 安装Maven现在你已经有一个可以编译的项目了,接下来我们开始安装Maven。 你可以从https://maven.apache.org/download.cgi上面下载Maven的二进制文件。我们只需要二进制文件,可以直接去找apache-maven-{version}-bin.zip或者apache-maven-{version}-bin.tar.gz文件来下载(例如apache-maven-3.6.3-bin.zip)。 下载下来之后,解压压缩包,然后把里面的bin文件夹添加到你的电脑的 高级系统设置 => 环境变量 => 系统变量 => path 里面。 为了测试Maven是否安装成功,用命令行运行命令: mvn -v如果安装成功,可以看到Maven的安装和环境信息如下(版本号可能不同): Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: D:\Program Files\Maven\apache-maven-3.6.3\bin\.. Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_231\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"这样Maven就安装成功了。 定义一个简单的Maven配置文件Maven安装成功之后,我们就可以定义一个Maven项目配置文件了。Maven项目都会定义一个XML文件:pom.xml。这个文件提供了项目的名称、版本和外部库的依赖。 在项目根目录新建一个pom.xml文件,文件内容如下: 4.0.0 com.hansy learn-maven jar 0.1.0 1.8 1.8 org.apache.maven.plugins maven-shade-plugin 2.1 package shade hello.HelloWorld除去可选的 元素,这已经是编译一个Java项目所需要的最简单的pom.xml文件了。它包含了如下的项目配置元素: 。POM模型版本(Maven2和3一直是4.0.0)。这个项目所属的分组或机构。经常表示为一个反向的域名。。项目的名称(例如:JAR或者 WAR文件的名字)。。项目的版本。。项目打包的方式。默认是"jar",将会打包成JAR文件。设置成"war"的话,将会打包成WAR文件。现在,我们完成了一个最小的,但是能够用Maven编译的项目。 编译Java代码Maven已经准备好编译项目了。你现在可以用Maven执行多种编译流程目标,包括: compile:编译项目源码package:生成一个库包(比如一个JAR文件)install:安装生成的库包到本地的Maven依赖仓库为了编译源码,运行如下命令: mvn compile这个命令会运行Maven,执行编译操作。执行完成之后,你会在target/classes文件夹里面找打编译好的*.class* 文件。 因为一般不会直接发布或者使用*.class*文件,你可能直接运行打包操作: mvn package打包命令的具体操作:编译Java源码,运行所有的测试,最后在 target 文件夹里面把编译好的字节码打包成JAR文件。JAR文件的文件名基于pom.xml文件里面的和。你的pom.xml如果跟上面的一样的话,生成出来的JAR文件的文件名将会是learn-maven-0.1.0.jar。 执行JAR文件: java -jar target/learn-maven-0.1.0.jar为了快速访问项目依赖,Maven维护着一个本地依赖仓库(默认在用户文件夹的 .m2/repository 下面)。如果你想把项目的JAR包安装到本地仓库里面,你可以运行安装命令: mvn install安装命令的具体流程:编译,测试,打包,最后把打包好的项目复制到本地仓库。这样你的项目就可以提供给本地的其他项目作为依赖使用了。 提到依赖,接下来会说明一下怎么在Maven配置文件里面声明依赖。 声明依赖我们刚才创建的Hello World项目是完全自包含的,没有依赖额外的类库。但是,大部分的应用,都会使用外部的类库,来处理一些简单的或者复杂的功能。 比如说,我们除了输出"Hello World!",还想打印出当前日期和时间。Java自带的日期和时间工具库可以这个要求,但是你也可以使用一个外部的Joda Time库来实现这个功能。 首先,修改 HelloWorld.java: package hello; import org.joda.time.LocalTime; public class HelloWorld { public static void main(String[] args) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is:" + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }我们在HelloWorld类里面,使用Joda Time的LocalTime类来获取和打印当前时间。 如果我们现在运行 mvn compile 命令,编译过程会失败(提示错误:程序包org.joda.time不存在),因为你还没有声明Joda Time库作为一个编译时的依赖。 你需要在pom.xml里面添加如下内容(在元素下面): joda-time joda-time 2.9.2这个XML代码块声明了项目的依赖列表。本项目只声明了一个Joda Time的依赖。在元素里面,一个依赖由如下三个子元素确定: 。依赖所属的分组或机构。。依赖的库名。。依赖库的版本。默认的情况下,所有的依赖的作用域都是“compile”。也就是,依赖必须在编译时可用(如果打包成WAR文件的话,依赖的类库会包含在WAR包的*/WEB-INF/libs*文件夹下面)。 此外,你还可能用到如下的两个作用域: provided :在编译的时候需要该依赖,但是运行时由执行程序的容器来提供该依赖(例如:Java Servlet API)。test :在编译和测试的时候需要该依赖,但是打包和运行的时候就不要这个依赖了。现在再运行mvn compile或者mvn package命令,Maven都可以从Maven Central仓库中获取到 Joda Time依赖了。 写一个测试首先,在pom.xml文件里面添加JUnit和hamcrest库的依赖,作用域设置为test: junit junit 4.12 test org.hamcrest hamcrest-library 2.2 test然后创建一个测试用例如下: src/test/java/hello/GreeterTest.java package hello; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.*; import org.junit.Test; public class GreeterTest { private Greeter greeter = new Greeter(); @Test public void greeterSaysHello() { assertThat(greeter.sayHello(), containsString("Hello")); } }Maven使用一个叫做“surefire”的插件来运行单元测试。这个插件默认会编译并运行src/test/java文件夹下面所有的文件名以Test结尾的类文件。你可以运行如下命令执行测试: mvn test显示结果如下: ...... ------------------------------------------------------- T E S T S ------------------------------------------------------- Running hello.GreeterTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.065 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.826 s [INFO] Finished at: 2020-07-14T16:57:19+08:00 [INFO] ------------------------------------------------------------------------或者也可以像上面那样直接使用 mvn install 命令(因为安装流程中包含着测试流程)。 最终的pom.xml文件如下: 4.0.0 com.hansy learn-maven jar 0.1.0 1.8 1.8 joda-time joda-time 2.9.2 junit junit 4.12 test org.hamcrest hamcrest-library 2.2 test org.apache.maven.plugins maven-shade-plugin 2.1 package shade hello.HelloWorldpom.xml文件中使用了maven-shade-plugin插件,这个插件使我们可以简单便捷的生成可执行的JAR文件。 小结你已经创建了一个简单但是有效的Maven编译配置文件,可以正常的编译Java项目了。 源码下载learn-maven 参考资料https://spring.io/guides/gs/maven/ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |